class Solution {
public:
    int firstCompleteIndex(vector<int>& arr, vector<vector<int>>& mat) {
        unordered_map<int, pair<int, int>>mp;
        int n = mat.size();
        int m = mat[0].size();
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                mp[mat[i][j]] = { i,j };
            }
        }
        vector<vector<bool>> st(n, vector<bool>(m, 0));
        vector<int>row(n), col(m);
        int cnt = -1;
        for (auto x : arr) {
            cnt++;
            auto t = mp[x];
            row[t.first]++;
            if (row[t.first] == m)return cnt;
            col[t.second]++;
            if (col[t.second] == n)return cnt;
            //st[t.first][t.second]=1;
            // cout<<"t1=="<<t.first<<endl;
            // cout<<"t2=="<<t.second<<endl;
            // for(int i=0;i<n;i++){
            //     bool f=0;
            //     for(int j=0;j<m;j++){
            //         if(!st[i][j]){
            //             f=1;
            //             break;
            //         }
            //     }
            //     if(!f)return cnt;
            // }
            // for(int i=0;i<m;i++){
            //     bool f=0;
            //     for(int j=0;j<n;j++){
            //         if(!st[j][i]){
            //             f=1;
            //             break;
            //         }
            //     }
            //     if(!f)return cnt;
            // }
        }
        return 0;
    }
};